<?php

/**
 * \file
 * Classe `Date`.
 */

namespace pilar\Entities /* \cond */ ; /* \endcond */
{

/**
 * Membre numérique de date.
 *
 * \todo Faire une classe de membre d'objet spécifique pour les dates
 * pour faciliter l'accès à l'année, au mois et au jour ?
 *
 * \since 18/09/2008
 * \author Matthieu OVIEDO <matthieu.oviedo@gmail.com>
 */
class Date extends Member {

protected function loadDefaultParams() {
 parent::loadDefaultParams();
 
 $this->params->set(array(
  'name' => 'date',
  'caption' => 'date',
  'genre' => 'she',        // En général les dates sont au féminin.
  'formClass' => '\\pilar\\SimpleFormMembers\\Date',
  'searchFormClass' => '\\pilar\\SearchFormMembers\\Date'
 ));

 $this->params->define(array(
  'defaultValue' => '' // Valeur par défaut.
 ));
}


protected function initialize() {
 parent::initialize();

 $this->addField(
  new \pilar\Entities\Fields\Date(array(
   'defaultValue' => $this->get('defaultValue')
  ))
 );
}


/**
 * \todo
 * Rendre plus compacte l'expression régulière.
 */
public function acceptsFieldValue($fieldName, $value) {
 return preg_match('/^([0-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9])$/', $value) == 1;
}


public function getFieldValueFromFormMember($fm, $f = '') {
 return $fm->Y.'-'.$fm->M.'-'.$fm->D;
}


public function getFormFieldValueFromObjectMember($om, $f = '') {
 $ov = $om->get();

 if($ov == '') return '';

 list($Y, $M, $D) = explode('-', $ov, 3);

 switch($f) {
  case 'Y': return $Y; break; 
  case 'M': return $M; break;
  case 'D': return $D; break;
  default: return '??';
 }
}


} // Class.

} // Namespace.

?>
